如果想使用Spock测试Spring Boot应用,你需要为应用添加Spock的spock-spring
依赖,该依赖已将Spring测试框架集成进Spock,怎么使用Spock测试Spring Boot应用取决于你使用的Spock版本。
注 Spring Boot为Spock 1.0提供依赖管理,如果希望使用Spock 1.1,你需要覆盖build.gradle
或pom.xml
文件中的spock.version
属性。
当使用Spock 1.1时,只能使用上述注解,你可以使用@SpringBootTest
注解你的Specification
以满足测试需求。
当使用Spock 1.0时,@SpringBootTest
将不能用于web项目,你需要使用@SpringApplicationConfiguration
和@WebIntegrationTest(randomPort = true)
。
不能使用@SpringBootTest
也就意味着你失去了自动配置的TestRestTemplate
bean,不过可以通过以下配置创建一个等价的bean:
@Configuration
static class TestRestTemplateConfiguration {
@Bean
public TestRestTemplate testRestTemplate(
ObjectProvider<RestTemplateBuilder> builderProvider,
Environment environment) {
RestTemplateBuilder builder = builderProvider.getIfAvailable();
TestRestTemplate template = builder == null ? new TestRestTemplate()
: new TestRestTemplate(builder.build());
template.setUriTemplateHandler(new LocalHostUriTemplateHandler(environment));
return template;
}
}